﻿using Might.Infrastructure.Services;
using Might.Infrastructure.Annotations.Graphics;
using Might.Modelica.Annotations;
using Might.Modelica.Annotations.Graphics;

namespace Might.Modelica {
    /// <summary>
    /// Major class responsible for interaction between this assembly and Modelica core
    /// </summary>
    public static class Implementation {
        
        public static void Initialize(IAnotTypeRegister typeRegister) 
        {            
            typeRegister.RegisterType(typeof(CoordinateSystem));
            typeRegister.RegisterType(typeof(Diagram));
            typeRegister.RegisterType(typeof(GraphicsBitmap));
            typeRegister.RegisterType(typeof(GraphicsColor));
            typeRegister.RegisterType(typeof(GraphicsEllipse));
            typeRegister.RegisterType(typeof(GraphicsExtent));
            typeRegister.RegisterType(typeof(GraphicsFilledShape));
            typeRegister.RegisterType(typeof(GraphicsItem));
            typeRegister.RegisterType(typeof(GraphicsLine));
            typeRegister.RegisterType(typeof(GraphicsPoint));
            typeRegister.RegisterType(typeof(GraphicsPolygon));
            typeRegister.RegisterType(typeof(GraphicsRectangle));
            typeRegister.RegisterType(typeof(GraphicsText));
            typeRegister.RegisterType(typeof(Icon));
            typeRegister.RegisterType(typeof(Placement));
            typeRegister.RegisterType(typeof(Transformation));
            typeRegister.RegisterType(typeof(LinePattern));
            typeRegister.RegisterType(typeof(FillPattern));
            typeRegister.RegisterType(typeof(BorderPattern));
            typeRegister.RegisterType(typeof(Smooth));
            typeRegister.RegisterType(typeof(Arrow));
            typeRegister.RegisterType(typeof(TextStyle));
            typeRegister.RegisterType(typeof(TextAlignment));
            typeRegister.RegisterType(typeof(Documentation));
        }
    }
}